61 research outputs found

    Hornet: An Efficient Data Structure for Dynamic Sparse Graphs and Matrices on GPUs

    Get PDF
    Sparse data computations are ubiquitous in science and engineering. Unlike their dense data counterparts, sparse data computations have less locality and more irregularity in their execution, making them significantly more challenging to parallelize and optimize. Many of the existing formats for sparse data representations on parallel architectures are restricted to static data problems, while those for dynamic data suffer from inefficiency both in terms of performance and memory footprint. This work presents Hornet, a novel data representation that targets dynamic data problems. Hornet is scalable with the input size, and does not require any data re-allocation or re-initialization during the data evolution. We show a Hornet implementation for GPU architectures and compare it to the most widely used static and dynamic data structures

    Pseudo-boundaries in discontinuous 2-dimensional maps

    Full text link
    It is known that Kolmogorov-Arnold-Moser boundaries appear in sufficiently smooth 2-dimensional area-preserving maps. When such boundaries are destroyed, they become pseudo-boundaries. We show that pseudo-boundaries can also be found in discontinuous maps. The origin of these pseudo-boundaries are groups of chains of islands which separate parts of the phase space and need to be crossed in order to move between the different sub-spaces. Trajectories, however, do not easily cross these chains, but tend to propagate along them. This type of behavior is demonstrated using a ``generalized'' Fermi map.Comment: 4 pages, 4 figures, Revtex, epsf, submitted to Physical Review E (as a brief report

    Quickly Finding a Truss in a Haystack

    Get PDF
    The k-truss of a graph is a subgraph such that each edge is tightly connected to the remaining elements in the k-truss. The k-truss of a graph can also represent an important community in the graph. Finding the k-truss of a graph can be done in a polynomial amount of time, in contrast finding other subgraphs such as cliques. While there are numerous formulations and algorithms for finding the maximal k-truss of a graph, many of these tend to be computationally expensive and do not scale well. Many algorithms are iterative and use static graph triangle counting in each iteration of the graph. In this work we present a novel algorithm for finding both the k- truss of the graph (for a given k), as well as the maximal k-truss using a dynamic graph formulation. Our algorithm has two main benefits. 1) Unlike many algorithms that rerun the static graph triangle counting after the removal of nonconforming edges, we use a new dynamic graph formulation that only requires updating the edges affected by the removal. As our updates are local, we only do a fraction of the work compared to the other algorithms. 2) Our algorithm is extremely scalable and is able to concurrently detect deleted triangles in contrast to past sequential approaches. While our algorithm is architecture independent, we show a CUDA based implementation for NVIDIA GPUs. In numerous instances, our new algorithm is anywhere from 100X-10000X faster than the Graph Challenge benchmark. Furthermore, our algorithm shows significant speedups, in some cases over 70X, over a recently developed sequential and highly optimized algorithm
    corecore